package com.rw.coco.api.data.persistence;

import com.rw.coco.api.data.model.AccountModel;

import java.util.List;

/**
 * 账号数据交互
 */
public interface AccountMapper {
    /**
     * 获取用户信息，如果用户不存在，则返回null
     *
     * @param id 用户的ID
     */
    AccountModel getAccount(String id);

    /**
     * 获取用户信息，如果没有，则返回默认
     * 注意，返回默认的同时，请将这个默认值入库
     *
     * @param id           用户的ID
     * @param defaultModel 默认的用户
     */
    AccountModel getAccountOrPut(String id, AccountModel defaultModel);

    /**
     * 批量获取用户信息
     *
     * @param idList 用户的ID列表
     */
    List<AccountModel> getAccountList(List<String> idList);

    /**
     * 操作一个用户变为黑、白名单
     *
     * @param id       用户ID
     * @param blackOff 是否是黑名单
     */
    void blackOrWhiteAccount(String id, boolean blackOff);

    /**
     * 设置用户的开头字符
     *
     * @param id         用户的ID
     * @param customChar 自定义字符
     */
    void setCustomChar(String id, String customChar);

    /**
     * 变更用户的使用角色
     *
     * @param id          用户的ID
     * @param characterId 角色ID
     */
    void setCharacter(String id, int characterId);

    /**
     * 变更用户原本的名称
     *
     * @param id       用户的ID
     * @param realName 用户原本的名称
     */
    void setRealName(String id, String realName);
}
